home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 1995 #5 & #6 / Amiga Plus CD - 1995 - No. 5 and 6.iso / pd / serien / purity / nr.42 / includes3v1 / includes3v1.lha / Intuition / PointerClass.i < prev    next >
Text File  |  1994-12-04  |  5KB  |  130 lines

  1.  { **  'boopsi' pointer class interface }
  2.  
  3. {$I "Include:Intuition/Intuition.i"}
  4. {$I "Include:Utility/TagItem.i"}
  5.  
  6.  
  7. const
  8. { The following tags are recognized at NewObject() time by
  9.  * pointerclass:
  10.  *
  11.  * POINTERA_BitMap (struct BitMap *) - Pointer to bitmap to
  12.  *      get pointer imagery from.  Bitplane data need not be
  13.  *      in chip RAM.
  14.  * POINTERA_XOffset (LONG) - X-offset of the pointer hotspot.
  15.  * POINTERA_YOffset (LONG) - Y-offset of the pointer hotspot.
  16.  * POINTERA_WordWidth (ULONG) - designed width of the pointer in words
  17.  * POINTERA_XResolution (ULONG) - one of the POINTERXRESN_ flags below
  18.  * POINTERA_YResolution (ULONG) - one of the POINTERYRESN_ flags below
  19.  *
  20.  }
  21.  
  22.  POINTERA_Dummy = (TAG_USER + $39000);
  23.  
  24.  POINTERA_BitMap        = (POINTERA_Dummy + $01);
  25.  POINTERA_XOffset       = (POINTERA_Dummy + $02);
  26.  POINTERA_YOffset       = (POINTERA_Dummy + $03);
  27.  POINTERA_WordWidth     = (POINTERA_Dummy + $04);
  28.  POINTERA_XResolution   = (POINTERA_Dummy + $05);
  29.  POINTERA_YResolution   = (POINTERA_Dummy + $06);
  30.  
  31. { These are the choices for the POINTERA_XResolution attribute which
  32.  * will determine what resolution pixels are used for this pointer.
  33.  *
  34.  * POINTERXRESN_DEFAULT (ECS-compatible pointer width)
  35.  *      = 70 ns if SUPERHIRES-type mode, 140 ns if not
  36.  *
  37.  * POINTERXRESN_SCREENRES
  38.  *      = Same as pixel speed of screen
  39.  *
  40.  * POINTERXRESN_LORES (pointer always in lores-like pixels)
  41.  *      = 140 ns in 15kHz modes, 70 ns in 31kHz modes
  42.  *
  43.  * POINTERXRESN_HIRES (pointer always in hires-like pixels)
  44.  *      = 70 ns in 15kHz modes, 35 ns in 31kHz modes
  45.  *
  46.  * POINTERXRESN_140NS (pointer always in 140 ns pixels)
  47.  *      = 140 ns always
  48.  *
  49.  * POINTERXRESN_70NS (pointer always in 70 ns pixels)
  50.  *      = 70 ns always
  51.  *
  52.  * POINTERXRESN_35NS (pointer always in 35 ns pixels)
  53.  *      = 35 ns always
  54.  }
  55.  
  56.  POINTERXRESN_DEFAULT   = 0;
  57.  POINTERXRESN_140NS     = 1;
  58.  POINTERXRESN_70NS      = 2;
  59.  POINTERXRESN_35NS      = 3;
  60.  
  61.  POINTERXRESN_SCREENRES = 4;
  62.  POINTERXRESN_LORES     = 5;
  63.  POINTERXRESN_HIRES     = 6;
  64.  
  65. { These are the choices for the POINTERA_YResolution attribute which
  66.  * will determine what vertical resolution is used for this pointer.
  67.  *
  68.  * POINTERYRESN_DEFAULT
  69.  *      = In 15 kHz modes, the pointer resolution will be the same
  70.  *        as a non-interlaced screen.  In 31 kHz modes, the pointer
  71.  *        will be doubled vertically.  This means there will be about
  72.  *        200-256 pointer lines per screen.
  73.  *
  74.  * POINTERYRESN_HIGH
  75.  * POINTERYRESN_HIGHASPECT
  76.  *      = Where the hardware/software supports it, the pointer resolution
  77.  *        will be high.  This means there will be about 400-480 pointer
  78.  *        lines per screen.  POINTERYRESN_HIGHASPECT also means that
  79.  *        when the pointer comes out double-height due to hardware/software
  80.  *        restrictions, its width would be doubled as well, if possible
  81.  *        (to preserve aspect).
  82.  *
  83.  * POINTERYRESN_SCREENRES
  84.  * POINTERYRESN_SCREENRESASPECT
  85.  *      = Will attempt to match the vertical resolution of the pointer
  86.  *        to the screen's vertical resolution.  POINTERYRESN_SCREENASPECT also
  87.  *        means that when the pointer comes out double-height due to
  88.  *        hardware/software restrictions, its width would be doubled as well,
  89.  *        if possible (to preserve aspect).
  90.  *
  91.  }
  92.  
  93.  POINTERYRESN_DEFAULT          =  0;
  94.  POINTERYRESN_HIGH             =  2;
  95.  POINTERYRESN_HIGHASPECT       =  3;
  96.  POINTERYRESN_SCREENRES        =  4;
  97.  POINTERYRESN_SCREENRESASPECT  =  5;
  98.  
  99. { Compatibility note:
  100.  *
  101.  * The AA chipset supports variable sprite width and resolution, but
  102.  * the setting of width and resolution is global for all sprites.
  103.  * When no other sprites are in use, Intuition controls the sprite
  104.  * width and sprite resolution for correctness based on pointerclass
  105.  * attributes specified by the creator of the pointer.  Intuition
  106.  * controls sprite resolution with the VTAG_DEFSPRITERESN_SET tag
  107.  * to VideoControl().  Applications can override this on a per-viewport
  108.  * basis with the VTAG_SPRITERESN_SET tag to VideoControl().
  109.  *
  110.  * If an application uses a sprite other than the pointer sprite,
  111.  * Intuition will automatically regenerate the pointer sprite's image in
  112.  * a compatible width.  This might involve BitMap scaling of the imagery
  113.  * you supply.
  114.  *
  115.  * If any sprites other than the pointer sprite were obtained with the
  116.  * old GetSprite() call, Intuition assumes that the owner of those
  117.  * sprites is unaware of sprite resolution, hence Intuition will set the
  118.  * default sprite resolution (VTAG_DEFSPRITERESN_SET) to ECS-compatible,
  119.  * instead of as requested by the various pointerclass attributes.
  120.  *
  121.  * No resolution fallback occurs when applications use ExtSprites.
  122.  * Such applications are expected to use VTAG_SPRITERESN_SET tag if
  123.  * necessary.
  124.  *
  125.  * NB:  Under release V39, only sprite width compatibility is implemented.
  126.  * Sprite resolution compatibility was added for V40.
  127.  }
  128.  
  129.  
  130.